package com.weactivity.dto;

import com.weactivity.entity.Activity;
import com.weactivity.utils.ConvertUtil;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 *
 * 该DTO是用在用户创建活动时
 * 包含了用户创建的活动信息,资源信息，参与人员信息
 *
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ActivityCreateInfo {

    //活动信息______________________________
    //活动名称
    private String activityName;
    //活动类型
    private String activityType;
    //活动描述
    private String activityDesc;
    //活动等级
    private String activityGrade;
    //活动开始时间
    private String beginTime;
    //活动结束时间
    private String endTime;


    //资源信息______________________________
    //资源等级
    private String resourceImp;
    //资源类型
    private String resourceType;
    //资源名称
    private String resourceName;

    //参加人员信息__________________________
    //参加人员id的数组
    // 用LinkedList来接收，不用ArrayList，因为LinkedList是用双向链表实现的
    //未来参加人员的id可能会添加或删除，这里使用LinkedList更快（推断，未证实）
    //ArrayList基于动态数组实现，访问更快
    private LinkedList<Integer> participantIdList;

    /**
     * 前端接收数据之后封装一个方法得到活动对象
     * @return
     */
    public Activity getActivity(){
        Activity activity = new Activity();
        int grade = ConvertUtil.convertActGrade(this.activityGrade);
        int type =  ConvertUtil.convertActType(this.activityType);
        //字符串 => yyyy-MM-dd HH:mm 格式的LocalDateTime
//       DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
//        LocalDateTime bTime = LocalDateTime.parse(beginTime,dateFormat);
//        LocalDateTime eTime = LocalDateTime.parse(endTime,dateFormat);
        activity.setName(activityName);
        activity.setDescribe(activityDesc);
        activity.setGrade(grade);
        activity.setType(type);
        activity.setBeginTime(beginTime);
        activity.setEndTime(endTime);
        return activity;
    };

    public Map<String,String> getResourceInfo(){

        Map<String,String> map = new HashMap<>();
        map.put("resourceName",resourceName);
        map.put("resourceType",resourceType);
        map.put("resourceImp",resourceImp);
        return map;
    }



}
